package com.yungu.swift.assets.driver.service;

import com.github.miemiedev.mybatis.paginator.domain.PageList;
import com.yungu.swift.assets.driver.model.dto.DriverDto;
import com.yungu.swift.assets.driver.model.dto.DriverQueueDto;
import com.yungu.swift.assets.driver.model.param.AdminCrosstownAssignPageParam;
import com.yungu.swift.assets.driver.model.param.AdminDriverMergePageParam;
import com.yungu.swift.assets.driver.model.vo.JoinAssignDriverVo;
import com.yungu.swift.assets.driver.model.vo.QueueDriverVo;
import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.model.PageVo;
import com.yungu.swift.lbs.model.Coordinate;

import java.util.List;
import java.util.Map;


/**
 * 司机排队业务处理
 **/

public interface DriverQueueService {

    ResponseData<PageList<DriverQueueDto>> queryPage(Map<String, Object> params, int pageNum, int pageSize);

    ResponseData<Map<String, Object>> queueUp(String appid, String driUuid, Double driLng, Double driLat, String uploadText,String cityUuid,String siteUuid);

    ResponseData<List<DriverQueueDto>> listQueue(String driUuid, String originSiteUuid);

    ResponseData<DriverDto> quit(String driUuid, Coordinate targetRemoveCoordinate);

    ResponseData<Map<String, Object>> queueStatus(String driUuid);

    ResponseData<List<DriverQueueDto>> list(Map<String, Object> params);

    ResponseData<List<QueueDriverVo>> queryQueueDriver(Map<String, Object> params);


    /**
     * 查询空闲司机
     *
     * @param freePageParam
     * @return
     */
    ResponseData<PageVo<JoinAssignDriverVo>> queryFreeDriver(AdminCrosstownAssignPageParam freePageParam);

    /**
     * 合并派单排队中司机查询
     *
     * @param mergePageParam
     * @return
     */
    ResponseData<PageVo<JoinAssignDriverVo>> mergeAssignDriverQuery(AdminDriverMergePageParam mergePageParam);

    /**
     * 派单排队中司机查询
     * @param param
     * @return
     */
    ResponseData<PageVo> queryByAssign(AdminCrosstownAssignPageParam param);

    /**
     * 排队城市
     * @param driverUuid
     * @return
     */
    ResponseData queueCity(String driverUuid);

    /**
     * 排队位置点
     * @param driverUuid
     * @return
     */
    ResponseData queueSite(String driverUuid);
}